package com.pro.service.impl;

import com.pro.bean.Courseinfo;
import com.pro.bean.PageGoods;
import com.pro.dao.CourseinfoDao;
import com.pro.service.CourseinfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/***
 *
 * Cousrinfo服务层实现类
 */
@Service
public class CourserinfoSeviceImpl implements CourseinfoService {
    /***
     * 注入CourseinfoDao，对里面的方法进行调用
     */
    @Autowired
    private CourseinfoDao courseinfoDao;

    /***
     * 查询积分商品
     */
    @Override
    public List<Courseinfo> selAPG() {
        return courseinfoDao.selAPG();
    }

    /***
     * 查询最热课程
     */
    @Override
    public List<Courseinfo> hot() {
        return courseinfoDao.hot();
    }

    /***
     * 查询最新课程
     */
    @Override
    public List<Courseinfo> newest() {
        return courseinfoDao.newest();
    }

    /***
     * 查询推荐课程显示到首页
     */
    public List<Courseinfo> indexRecommend(Map map) {
        //先获取页面传输过来的值
        int offset = (int) map.get("offset");
        //由于是推荐页，所以数据库列直接声明recommend列=1的数据为推荐课程，所以直接设置查询recommend=1的数据
        map.put("recommend", 1);
        if (offset == 0) {//如果offset等于0说明并没进入推荐页更多信息，所以直接限制首页只能显示4条数据
            map.put("count", 4);
            return courseinfoDao.indexRecommend(map);
        }
        //如果不为0则说明进入的更多信息页，直接查询
        return courseinfoDao.indexRecommend(map);
    }

    /***
     * 查询二级分类首页精选课程
     */
    public List<Courseinfo> indexSelection(Map map) {
        //由于数据库中如果该课程为课程精选课程则selection列为1，不是则为2
        //所以当前直接设置为selection为1
        map.put("selection",1);
        //将首页课程精选课程展示课程默认展示为4
        //所以limit直接设置为4
        map.put("count",4);
        return courseinfoDao.indexSelection(map);
    }

    /***
     * 多表联查，根据课程id查询课程信息表，讲师表
     */
    public Courseinfo selCourseById(int courseId) {
        return courseinfoDao.selCourseById(courseId);
    }

    /***
     * 分页查询所有课程信息表中所有信息
     */
    @Override
    public List<Courseinfo> selAll(PageGoods page) {
        int currentPage = page.getPage();//获得当前页
        int limit = page.getLimit(); //获得当前需要展示的页面数据个数
        page.setPageIndex((currentPage-1)*limit);//运算出分页查询下标
        return courseinfoDao.selAll(page);
    }

    @Override
    public int courseCount() {
        return courseinfoDao.courseCount() ;
    }
}

